home *** CD-ROM | disk | FTP | other *** search
- /******************************************************************************
- OS/2 specific structures and data to be included in the global data structure
- ******************************************************************************/
-
-
- #define MAXNAMLEN 256
- #define MAXPATHLEN 256
- #define MAXLEN 256 /* temporary buffer length */
- #define IBUF_LEN 4096 /* Input buffer length */
-
- #define INCL_NOPM
- #define INCL_DOSNLS
- #define INCL_DOSPROCESS
- #define INCL_DOSDEVICES
- #define INCL_DOSDEVIOCTL
- #define INCL_DOSERRORS
- #define INCL_DOSMISC
-
- #if defined(OS2API) && !defined(DLL)
- # undef OS2API
- #endif
-
- #ifdef OS2API
- # define INCL_REXXSAA
- # include <rexxsaa.h>
- #endif
- #include <os2.h>
-
-
- struct direct
- {
- ino_t d_ino; /* a bit of a farce */
- int d_reclen; /* more farce */
- int d_namlen; /* length of d_name */
- char d_name[MAXNAMLEN + 1]; /* null terminated */
- /* nonstandard fields */
- long d_size; /* size in bytes */
- unsigned d_mode; /* MS-DOS or OS/2 file attributes */
- unsigned d_time;
- unsigned d_date;
- };
-
-
- /* The fields d_size and d_mode are extensions by me (Kai Uwe Rommel). The
- * find_first and find_next calls deliver these data without any extra cost.
- * If these data are needed, the fields save a lot of extra calls to stat()
- * (each stat() again performs a find_first call !).
- */
-
- struct _dircontents
- {
- char *_d_entry;
- long _d_size;
- unsigned _d_mode, _d_time, _d_date;
- struct _dircontents *_d_next;
- };
-
- typedef struct _dirdesc
- {
- int dd_id; /* uniquely identify each open directory */
- long dd_loc; /* where we are in directory entry is this */
- struct _dircontents *dd_contents; /* pointer to contents of dir */
- struct _dircontents *dd_cp; /* pointer to current position */
- }
- DIR;
-
-
-
-
-
- struct os2Global {
-
- #ifndef SFX
- HDIR hdir;
- # ifdef __32BIT__
- ULONG count;
- FILEFINDBUF3 find;
- # else
- USHORT count;
- FILEFINDBUF find;
- # endif
- #endif
-
- int created_dir; /* used by mapname(), checkdir() */
- int renamed_fullpath; /* ditto */
- int fnlen; /* ditto */
- #ifdef __32BIT__
- ULONG nLabelDrive; /* ditto */
- #else
- USHORT nLabelDrive;
- #endif
- int longnameEA; /* checkdir(), close_outfile() */
- char *lastpathcomp; /* ditto */
-
- struct direct dp;
- int lower;
- USHORT nLastDrive, nResult;
-
- DIR *dir;
- char *dirname, *wildname, matchname[FILNAMSIZ];
- int firstcall, have_dirname, dirnamelen;
-
- int rootlen; /* length of rootpath */
- char *rootpath; /* user's "extract-to" directory */
- char *buildpathHPFS; /* full path (so far) to extracted file, */
- char *buildpathFAT; /* both HPFS/EA (main) and FAT versions */
- char *endHPFS; /* corresponding pointers to end of */
- char *endFAT; /* buildpath ('\0') */
-
- #ifdef OS2API
- char buffer[IBUF_LEN];
- char output_var[MAXLEN];
- char getvar_buf[MAXLEN];
- int getvar_len;
-
- int output_idx;
- int stem_len;
- int putchar_idx;
- int rexx_error;
- char *rexx_mes;
-
- SHVBLOCK request;
- #endif
-
- };
-
- #define SYSTEM_SPECIFIC_GLOBALS struct os2Global os2;
- #define SYSTEM_SPECIFIC_CTOR os2GlobalsCtor
-
-
- #ifdef OS2API
-
- # ifdef API_DOC
-
- # define SYSTEM_API_BRIEF REXXBrief
- # define SYSTEM_API_DETAILS REXXDetails
-
- extern char *REXXBrief;
- extern APIDocStruct REXXDetails[];
-
- # endif
- #endif
-